package com.taxshare.purchaser.entity;

import java.io.Serializable;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.taxshare.mybatis.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.EqualsAndHashCode;

/**
 * @author luozhongyi
 * @ClassName: ElectronicledgerEntity
 * @Description:
 * @date 2021-03-29
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("t_purchaser_invoice_electronicledger")
public class ElectronicledgerEntity extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId("invoice_id")
    private String invoiceId;
    /**
     * 发票类型
     */
    @TableField("invoice_type")
    private String invoiceType;
    /**
     * 发票代码
     */
    @TableField("invoice_code")
    private String invoiceCode;
    /**
     * 发票号码
     */
    @TableField("invoice_no")
    private String invoiceNo;
    /**
     * 开票日期
     */
    @TableField("invoice_date")
    private String invoiceDate;
    /**
     * 购方名称
     */
    @TableField("purchaser_name")
    private String purchaserName;
    /**
     * 购方税号
     */
    @TableField("purchaser_taxno")
    private String purchaserTaxno;
    /**
     * 购方地址电话
     */
    @TableField("purchaser_addr_phone")
    private String purchaserAddrPhone;
    /**
     * 购方银行账号
     */
    @TableField("purchaser_brank")
    private String purchaserBrank;
    /**
     * 销方名称
     */
    @TableField("seller_name")
    private String sellerName;
    /**
     * 销方税号
     */
    @TableField("seller_taxno")
    private String sellerTaxno;
    /**
     * 销方地址电话
     */
    @TableField("seller_addr_phone")
    private String sellerAddrPhone;
    /**
     * 销方银行账号
     */
    @TableField("seller_brank")
    private String sellerBrank;
    /**
     * 金额
     */
    @TableField("amout_with_tax")
    private BigDecimal amoutWithTax;
    /**
     * 税额
     */
    @TableField("tax_amout")
    private BigDecimal taxAmout;
    /**
     * 有效税额
     */
    @TableField("valid_tax")
    private BigDecimal validTax;
    /**
     * 价税合计
     */
    @TableField("total_amout")
    private BigDecimal totalAmout;
    /**
     * 认证状态 (0-未认证 ,1-已认证 ,2-认证失败 ,3-待认证,4-认证中)
     */
    @TableField("auth_state")
    private String authState;
    /**
     * 认证结果 01勾选（撤销）成功，02查无此票；03该票异常无法勾选；04该票已经逾期无法认证；05当期已锁定（已申请统计）;06已勾选无法重复勾选;07未到期发票不可勾选（开票月份大于当前属期);11低版本发票;12机动车异常发票;13该票号码重复；31待处理农产品发票未确认；99其他
     */
    @TableField("auth_result")
    private String authResult;
    /**
     * 认证结果内容 01勾选（撤销）成功，02查无此票；03该票异常无法勾选；04该票已经逾期无法认证；05当期已锁定（已申请统计）;06已勾选无法重复勾选;07未到期发票不可勾选（开票月份大于当前属期);11低版本发票;12机动车异常发票;13该票号码重复；31待处理农产品发票未确认；99其他
     */
    @TableField("auth_result_content")
    private String authResultContent;
    /**
     * 认证日期
     */
    @TableField("auth_date")
    private String authDate;
    /**
     * 认证属期
     */
    @TableField("auth_period")
    private String authPeriod;
    /**
     * 认证模式(1-抵扣，2-退税)
     */
    @TableField("auth_mode")
    private String authMode;
    /**
     * 发票状态 (0：正常 1：失控 2：作废 3：已红冲 7：部分红冲  8：全额红冲)
     */
    @TableField("invoice_state")
    private String invoiceState;

    /**
     * 管理状态 0-正常，1-非正常
     */
    @TableField("management_state")
    private String managementState;

    /**
     * 异常类别 0-发票状态异常 1-用途变更 2-管理状态异常
     */
    @TableField("abnormal_type")
    private String abnormalType;

    /**
     * 认证人员id
     */
    @TableField("auth_userid")
    private String authUserid;
    /**
     * 认证人员name
     */
    @TableField("auth_username")
    private String authUsername;

    /**
     * 认证操作时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("auth_time")
    private Date authTime;

    /**
     * 提交状态 0-未提交 1-已提交 2-驳回
     */
    @TableField("submit_state")
    private String submitState;

    /**
     * 提交类型 0-手动提交 1-Excel导入
     */
    @TableField("submit_mode")
    private String submitMode;

    /**
     * 提交人员id
     */
    @TableField("submit_userid")
    private String submitUserid;
    /**
     * 提交人员id
     */
    @TableField("submit_username")
    private String submitUsername;
    /**
     * 提交操作时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("submit_time")
    private LocalDateTime submitTime;

    /**
     * 是否可抵扣标记 0、不可抵扣 1、可抵扣
     */
    @TableField("invoice_flag")
    private String invoiceFlag;

    /**
     * 单据编号
     */
    @TableField("doc_no")
    private String docNo;

    /**
     * 单据状态 0-审批中 1-审批通过 2-退回
     */
    @TableField("doc_state")
    private String docState;

    /**
     * 发票对应科目名称
     */
    @TableField("account_item")
    private String accountItem;



    @TableId("fppzDm")
    private String fppzDm; //开发票票种代码

    @TableId("tdyslxDm")
    private String tdyslxDm; //特定要素类型代码

    @TableId("sflzfp")
    private String sflzfp; //是否蓝字发票Y：是 N：否

    @TableId("kjhzfpdydlzfphm")
    private String kjhzfpdydlzfphm; //开具红字发票对应的蓝字发票号码

    @TableId("kjhzfpdydzzfpDm")
    private String kjhzfpdydzzfpDm; //开具红字发票对应的纸质发票代码

    @TableId("kjhzfpdydzzfphm")
    private String kjhzfpdydzzfphm; //开具红字发票对应的纸质发票号码

    @TableId("xhfdz")
    private String xhfdz; //销货方地址

    @TableId("gmfdz")
    private String gmfdz; //购买方地址

    @TableId("jshjdx")
    private String jshjdx; //价税合计(大写)

    @TableId("kce")
    private String kce; //扣除额

    @TableId("jsfsDm")
    private String jsfsDm; //结算方式

    @TableId("kpr")
    private String kpr; //开票人

    @TableId("bz")
    private String bz; //备注

    @TableId("zzsjzjtDm")
    private String zzsjzjtDm; //增值税即征即退代码

    @TableId("cktslDm")
    private String cktslDm; //出口退税类代码

    @TableId("fhrxm")
    private String fhrxm; //复核人姓名

    @TableId("skrxm")
    private String skrxm; //收款人姓名

    @TableId("xsfdh")
    private String xsfdh; //销售方电话

    @TableId("xsfkhh")
    private String xsfkhh; //销售方开户行

    @TableId("xsfzh")
    private String xsfzh; //销售方账号

    @TableId("gmfdh")
    private String gmfdh; //购买方电话

    @TableId("gmfkhh")
    private String gmfkhh; //购买方开户行

    @TableId("gmfzh")
    private String gmfzh; //购买方账号

    @TableId("xfnsrlxdm")
    private String xfnsrlxdm; //销方纳税人类型代码1：一般纳税人2：小规模纳税人3：转登记小规模纳税人4：辅导期一般纳税人

    @TableId("cpyycbs")
    private String cpyycbs; //成品油异常标识9：正常； 1：成品油单价异常；2：成品油超库存异常；8：正常，需全额红冲

    @TableId("sfycpz")
    private String sfycpz; //是否异常凭证  01:正常；02:异常凭证；03:疑似异常凭证

    @TableId("sdzt")
    private String sdzt; //锁定状态  01:未锁定；02:已锁定

    @TableId("hxyt")
    private String hxyt; //当前勾选用途  1:已申请抵扣；2:已申请退税；3:已申请代办退税；4:已勾选不抵扣（历史数据）；5:已申请代办退税（历史数据）;6:已申请不抵扣;11:东奥退税

}